home *** CD-ROM | disk | FTP | other *** search
- <?xml version="1.0" encoding="utf-8"?>
- <xsl:stylesheet version="1.0"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- xmlns:roboml="urn:schemas-ehelp-com:xslt"
- xmlns:RHHandlerDb="http://ehelp.com/RHHandlerDb"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:html="http://www.w3.org/1999/xhtml"
- exclude-result-prefixes="roboml msxsl RHHandlerDb xsl html">
-
- <xsl:output method="xml" cdata-section-elements="programlisting" encoding="utf-8" indent="no"/>
-
- <!-- parameters -->
- <xsl:param name="roboxml_destination_dir_name"></xsl:param>
- <xsl:param name="roboxml_project_file_name"></xsl:param>
-
- <xsl:param name="export.comment" select="1" />
- <xsl:param name="export.script" select="1" />
- <xsl:param name="export.style" select="1" />
-
- <xsl:variable name="rhc.const.dummyflagstring" select="'RHC.DUMMY'" />
-
- <!-- includings -->
- <xsl:include href="./common/rhc_l10n.xsl"/> <!-- language -->
- <xsl:include href="PRJ2DOCBOOKUTILS.xsl"/> <!-- utility template and script functions -->
-
- <!-- ================= Script defines here =========================== -->
- <msxsl:script language="JScript" implements-prefix="RHHandlerDb">
- function nodeToStr(nodeList)
- {
- return nodeList.nextNode().xml;
- }
- </msxsl:script>
-
- <!-- ================= Template defines here =========================== -->
- <xsl:template match="html:html">
- <section>
- <xsl:if test="html:head/html:link[@href!='']">
- <xsl:attribute name="condition">
- <xsl:value-of select="html:head/html:link/@href"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="./html:body" />
- </xsl:call-template>
- <sectioninfo>
- <xsl:apply-templates select="html:head"/>
- </sectioninfo>
- <xsl:apply-templates select="html:head/html:title" />
-
- <xsl:apply-templates select="html:head/html:script" mode="head_script" />
-
- <xsl:call-template name="generateSection">
- <xsl:with-param name="node" select="html:body/node()" />
- </xsl:call-template>
- </section>
- </xsl:template>
-
- <xsl:template name="generateSection">
- <xsl:param name="node" select="." />
-
- <xsl:variable name="sectionContent">
- <xsl:variable name="SectionDivTagPositions">
- <xsl:for-each select="$node">
- <xsl:if test="((local-name(.)='div') or (local-name(.)='noscript'))and
- ((./following-sibling::*[1][local-name()!='div' and local-name()!='noscript']) or
- (normalize-space(./following-sibling::node()[1]/self::text()) != ''))">
- <xsl:value-of select="concat(position(), '-')" />
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
- <xsl:variable name="PosOfFirstSectionDivTag">
- <xsl:value-of select="substring-before($SectionDivTagPositions, '-')" />
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$PosOfFirstSectionDivTag != ''">
-
- <xsl:variable name="DivPositions">
- <xsl:for-each select="$node">
- <xsl:if test="(position() > $PosOfFirstSectionDivTag) and ((local-name()='div') or (local-name()='noscript'))">
- <xsl:value-of select="concat(position(), '-')" />
- </xsl:if>
- </xsl:for-each>
- <xsl:value-of select="concat(count($node)+1, '-')" />
- </xsl:variable>
- <xsl:variable name="PosOfFirstDivAfterSectionDivTag">
- <xsl:value-of select="substring-before($DivPositions, '-')" />
- </xsl:variable>
-
- <xsl:apply-templates select="$node[position() <= $PosOfFirstSectionDivTag]" />
-
- <xsl:if test="$PosOfFirstDivAfterSectionDivTag - $PosOfFirstSectionDivTag > 1">
- <section>
- <xsl:call-template name="generate_dummy_role_attribute"/>
- <xsl:call-template name="generate_dummy_element">
- <xsl:with-param name="elementname" select="'title'" />
- </xsl:call-template>
-
- <xsl:variable name="intermediateSection">
- <!-- the following should not be necessary but still keep now for safe... to be checked carefully later
- <xsl:if test="count($node[(position() > $PosOfFirstSectionDivTag)
- and (position() < $PosOfFirstDivAfterSectionDivTag)][node()]) = 0 ">
- <xsl:if test="normalize-space($node[(position() > $PosOfFirstSectionDivTag)
- and (position() < $PosOfFirstDivAfterSectionDivTag)][text()])=''">
- <xsl:call-template name="generate_dummy_element">
- <xsl:with-param name="elementname" select="'para'" />
- </xsl:call-template>
- </xsl:if>
- </xsl:if>
- check carefully ends -->
- <xsl:apply-templates select="$node[(position() > $PosOfFirstSectionDivTag)
- and (position() < $PosOfFirstDivAfterSectionDivTag)]" />
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="msxsl:node-set($intermediateSection)/*">
- <xsl:call-template name="integrate_continuous_dummysimpara_to_one">
- <xsl:with-param name="node" select="msxsl:node-set($intermediateSection)" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="generate_dummy_element">
- <xsl:with-param name="elementname" select="'para'" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </section>
- </xsl:if>
-
- <xsl:if test="$PosOfFirstDivAfterSectionDivTag <= count($node)">
- <xsl:call-template name="generateSection">
- <xsl:with-param name="node" select="$node[position() >= $PosOfFirstDivAfterSectionDivTag]" />
- </xsl:call-template>
- </xsl:if>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:apply-templates select="$node" />
- <xsl:if test="(count($node[node()]) = 0) and (normalize-space($node[text()])='')">
- <xsl:call-template name="generate_dummy_element">
- <xsl:with-param name="elementname" select="'para'" />
- </xsl:call-template>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:variable>
-
- <xsl:if test="$sectionContent">
- <xsl:call-template name="integrate_continuous_dummysimpara_to_one">
- <xsl:with-param name="node" select="msxsl:node-set($sectionContent)" />
- </xsl:call-template>
- </xsl:if>
-
- </xsl:template>
-
- <xsl:template name="integrate_continuous_dummysimpara_to_one">
- <xsl:param name="node"/>
- <xsl:param name="posStart" select="1" />
-
- <xsl:variable name="nodeCount">
- <xsl:value-of select="count($node/node())" />
- </xsl:variable>
-
- <!-- find the first non-dummy simpara ELEMENT from the start position -->
- <xsl:variable name="posOfFirst_Not_DummySimpara">
- <xsl:variable name="PositionsOfAll_Not_DummySimpara">
- <xsl:for-each select="$node/node()[position() >= $posStart]">
- <xsl:if test="(local-name(.)!='') and
- ((local-name() != 'simpara' or ./@role != $rhc.const.dummyflagstring))">
- <xsl:value-of select="concat(position() + $posStart -1, '-')" />
- </xsl:if>
- </xsl:for-each>
- <xsl:value-of select="concat($nodeCount+1, '-')" />
- </xsl:variable>
- <xsl:value-of select="substring-before($PositionsOfAll_Not_DummySimpara, '-')" />
- </xsl:variable>
-
- <!-- merge all continuous dummy simpara nodes together into one -->
- <xsl:if test="$posOfFirst_Not_DummySimpara > $posStart">
- <simpara>
- <xsl:call-template name="generate_dummy_role_attribute"/>
- <xsl:for-each select="$node/node()[(position() >= $posStart) and (position() < $posOfFirst_Not_DummySimpara)]">
- <xsl:choose>
- <xsl:when test="local-name(.) = ''"> <!-- comment or Text() -->
- <xsl:copy />
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="./child::node()"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </simpara>
- </xsl:if>
-
- <xsl:if test="$posOfFirst_Not_DummySimpara <= $nodeCount">
-
- <!-- find next dummy simpara start position -->
- <xsl:variable name="posOfNext_DummySimpara">
- <xsl:variable name="positionsOfAll_DummySimpara">
- <xsl:for-each select="$node/node()[position() > $posOfFirst_Not_DummySimpara]">
- <xsl:if test="(local-name(.)='simpara') and (./@role=$rhc.const.dummyflagstring)">
- <xsl:value-of select="concat(position() + $posOfFirst_Not_DummySimpara, '-')" />
- </xsl:if>
- </xsl:for-each>
- <xsl:value-of select="concat($nodeCount+1, '-')" />
- </xsl:variable>
- <xsl:value-of select="substring-before($positionsOfAll_DummySimpara, '-')" />
- </xsl:variable>
-
- <!-- copy all non-dummy simpara nodes directly -->
- <xsl:for-each select="$node/node()[position() >= $posOfFirst_Not_DummySimpara and position() < $posOfNext_DummySimpara]">
- <xsl:copy-of select="."/>
- </xsl:for-each>
-
- <!-- dealing with next dummy simpara fragment -->
- <xsl:if test="$posOfNext_DummySimpara <= $nodeCount">
- <xsl:call-template name="integrate_continuous_dummysimpara_to_one">
- <xsl:with-param name="node" select="$node" />
- <xsl:with-param name="posStart" select="$posOfNext_DummySimpara" />
- </xsl:call-template>
- </xsl:if>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="html:head/html:meta">
- <xsl:if test="@name='description'">
- <abstract>
- <para>
- <xsl:value-of select="@content" />
- </para>
- </abstract>
- </xsl:if>
- <xsl:if test="@name='RobomlCodecName' and @content !=''">
- <publisher>
- <xsl:attribute name="role">
- <xsl:value-of select="concat('RobomlCodecName: ', @content)" />
- </xsl:attribute>
- <publishername>RoboHelp by eHelp Corporation - www.ehelp.com</publishername>
- </publisher>
- </xsl:if>
-
- </xsl:template>
-
- <xsl:template match="html:title[normalize-space(text())!= '']">
- <title>
- <xsl:value-of select="text()"/>
- </title>
- </xsl:template>
-
- <xsl:template match="html:div|html:noscript">
- <section>
- <xsl:apply-templates select="@*"/>
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="." />
- </xsl:call-template>
- <xsl:call-template name="generate_dummy_element">
- <xsl:with-param name="elementname" select="'title'" />
- </xsl:call-template>
- <xsl:call-template name="generateSection">
- <xsl:with-param name="node" select="./node()" />
- </xsl:call-template>
- </section>
- </xsl:template>
-
- <xsl:template match="html:h1|html:h2|html:h3|html:h4|html:h5|html:h6">
- <para>
- <xsl:apply-templates select="@*"/>
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="." />
- </xsl:call-template>
- <xsl:apply-templates />
- </para>
- </xsl:template>
-
- <xsl:template match="html:p">
- <para>
- <xsl:apply-templates select="@*" />
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="." />
- </xsl:call-template>
- <xsl:apply-templates />
- </para>
- </xsl:template>
-
- <xsl:template match="html:a" mode="rh.export.topic">
- <xsl:choose>
- <!-- URL link -->
- <xsl:when test="normalize-space(@name)=''">
- <xsl:variable name="nodeContent">
- <ulink>
- <xsl:apply-templates select="@*" />
- <xsl:attribute name="url">
- <xsl:value-of select="normalize-space(@href)"/>
- </xsl:attribute>
- <xsl:apply-templates/>
- </ulink>
- </xsl:variable>
-
- <xsl:call-template name="simpara_pack_node">
- <xsl:with-param name="nodeContent" select="$nodeContent" />
- </xsl:call-template>
- </xsl:when>
-
- <!-- An Anchor -->
- <xsl:otherwise>
- <anchor>
- <xsl:apply-templates select="@*" />
- <xsl:if test="@name">
- <xsl:attribute name="id">
- <xsl:value-of select="normalize-space(@name)"/>
- </xsl:attribute>
- </xsl:if>
- </anchor>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="html:a">
- <xsl:choose>
- <!-- URL link -->
- <xsl:when test="normalize-space(@name)=''">
- <xsl:variable name="nodeContent">
- <xsl:variable name="transformedURL">
- <xsl:call-template name="transformed_url">
- <xsl:with-param name="url" select="normalize-space(@href)" />
- <xsl:with-param name="prjfile" select="string($roboxml_project_file_name)" />
- </xsl:call-template>
- </xsl:variable>
- <ulink>
- <xsl:apply-templates select="@*" />
- <xsl:attribute name="url">
- <xsl:value-of select="normalize-space($transformedURL)"/>
- </xsl:attribute>
- <xsl:apply-templates/>
- </ulink>
- </xsl:variable>
-
- <xsl:call-template name="simpara_pack_node">
- <xsl:with-param name="nodeContent" select="$nodeContent" />
- </xsl:call-template>
- </xsl:when>
-
- <!-- An Anchor -->
- <xsl:otherwise>
- <anchor>
- <xsl:apply-templates select="@*" />
- <xsl:if test="@name">
- <xsl:attribute name="id">
- <xsl:value-of select="normalize-space(@name)"/>
- </xsl:attribute>
- </xsl:if>
- </anchor>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="html:img">
- <xsl:choose>
- <xsl:when test="@usemap">
- <mediaobjectco>
- <imageobjectco>
-
- <xsl:call-template name="areaspec">
- <xsl:with-param name="mapID" select="substring-after(@usemap,'#')"/>
- </xsl:call-template>
-
- <imageobject>
- <xsl:call-template name="image"/>
- </imageobject>
-
- <xsl:call-template name="calloutlist">
- <xsl:with-param name="mapID" select="substring-after(@usemap,'#')"/>
- </xsl:call-template>
-
- </imageobjectco>
- </mediaobjectco>
- </xsl:when>
-
- <xsl:when test="boolean(parent::html:p) and normalize-space(parent::html:p/text())!=''">
- <inlinemediaobject>
- <imageobject>
- <xsl:call-template name="image"/>
- </imageobject>
- </inlinemediaobject>
- </xsl:when>
-
- <xsl:when test="parent::html:body or parent::html:div or parent::html:noscript">
- <mediaobject>
- <imageobject>
- <xsl:call-template name="image"/>
- </imageobject>
- </mediaobject>
- </xsl:when>
-
- <xsl:otherwise>
- <inlinemediaobject>
- <imageobject>
- <xsl:call-template name="image"/>
- </imageobject>
- </inlinemediaobject>
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <xsl:template name="areaspec">
- <xsl:param name="mapID" select="0"/>
-
- <xsl:element name="areaspec">
- <xsl:attribute name="id">
- <xsl:value-of select="$mapID"/>
- </xsl:attribute>
-
- <xsl:for-each select="//html:map[@id = $mapID]/html:area">
-
- <xsl:variable name="areaid">
- <xsl:call-template name="generateAreaId">
- <xsl:with-param name="mapID" select="$mapID" />
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:element name="area">
- <xsl:attribute name="units">other</xsl:attribute>
- <xsl:attribute name="otherunits">
- <xsl:value-of select="@shape"/>
- </xsl:attribute>
- <xsl:attribute name="id"> <!-- here, id is required by Docbook -->
- <xsl:value-of select="$areaid" />
- </xsl:attribute>
- <xsl:attribute name="linkends">
- <xsl:value-of select="concat($areaid, '_url')"/>
- </xsl:attribute>
- <xsl:if test="@alt">
- <xsl:attribute name="label">
- <xsl:value-of select="@alt"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:attribute name="coords">
- <xsl:value-of select="@coords"/>
- </xsl:attribute>
- </xsl:element>
-
- </xsl:for-each>
- </xsl:element>
- </xsl:template>
-
- <xsl:template name="generateAreaId">
- <xsl:param name="mapID" select="0"/>
- <xsl:param name="areanode" select="." />
- <xsl:choose>
- <xsl:when test="@id">
- <xsl:value-of select="@id" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat($mapID, '_area_', position())" />
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <xsl:template name="calloutlist">
- <xsl:param name="mapID" select="0"/>
-
- <calloutlist>
- <xsl:call-template name="generate_dummy_role_attribute"/>
- <xsl:for-each select="//html:map[@id = $mapID]/html:area">
-
- <xsl:variable name="areaid">
- <xsl:call-template name="generateAreaId">
- <xsl:with-param name="mapID" select="$mapID" />
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="transformedURL">
- <xsl:call-template name="transformed_url">
- <xsl:with-param name="url" select="normalize-space(@href)" />
- <xsl:with-param name="prjfile" select="string($roboxml_project_file_name)" />
- </xsl:call-template>
- </xsl:variable>
-
- <callout>
- <xsl:attribute name="arearefs">
- <xsl:value-of select="$areaid" />
- </xsl:attribute>
- <simpara>
- <xsl:call-template name="generate_dummy_role_attribute"/>
- <ulink>
- <xsl:attribute name="id">
- <xsl:value-of select="concat($areaid, '_url')"/>
- </xsl:attribute>
- <xsl:attribute name="url">
- <xsl:value-of select="$transformedURL"/>
- </xsl:attribute>
- </ulink>
- </simpara>
- </callout>
-
- </xsl:for-each>
- </calloutlist>
- </xsl:template>
-
- <xsl:template name="image">
- <imagedata>
- <xsl:apply-templates select="@*" />
- <xsl:attribute name="fileref">
- <xsl:value-of select="@src"/>
- </xsl:attribute>
- <xsl:if test="@height != ''">
- <xsl:attribute name="depth">
- <xsl:value-of select="@height"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="@width != ''">
- <xsl:attribute name="width">
- <xsl:value-of select="@width"/>
- </xsl:attribute>
- </xsl:if>
- <!-- ABSBOTTOM | ABSMIDDLE | BASELINE | BOTTOM | LEFT | MIDDLE | RIGHT | TEXTTOP | TOP -->
- <xsl:if test="@align != ''">
- <xsl:choose>
- <xsl:when test="@align = 'bottom' or @align = 'top'">
- <xsl:attribute name="valign"><xsl:value-of select="@align" /></xsl:attribute>
- </xsl:when>
- <xsl:when test="@align = 'middle'">
- <xsl:attribute name="valign">middle</xsl:attribute>
- <xsl:attribute name="align">center</xsl:attribute>
- </xsl:when>
- <xsl:when test="@align = 'left' or @align = 'right'">
- <xsl:attribute name="align"><xsl:value-of select="@align" /></xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="srccredit">
- <xsl:value-of select="concat('RHC.VALUE.ALIGN\', @align)" />
- </xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </imagedata>
- </xsl:template>
-
- <xsl:template match="html:b|html:u|html:i|html:s|html:strike|html:q|html:cite|html:em|html:strong
- |html:big|html:small|html:sub|html:sup
- |html:tt|html:kbd|html:samp|html:var|html:code
- |html:abbr|html:acronym|html:font|html:basefont|html:span">
-
- <xsl:choose>
-
- <!-- there's any embedded tag inside these text elements -->
- <xsl:when test="count(./node())!=1 or count(./text())!=1">
- <xsl:call-template name="process_text_elements" />
- </xsl:when>
-
- <!-- there's no any other element inside -->
- <xsl:otherwise>
- <xsl:variable name="nodeContent">
- <xsl:choose>
- <xsl:when test="local-name(.) = 'b' or local-name='strong'">
- <emphasis role="bold">
- <xsl:apply-templates select="@*" />
- <xsl:apply-templates/>
- </emphasis>
- </xsl:when>
- <xsl:when test="local-name='cite'">
- <citation>
- <xsl:apply-templates select="@*" />
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="." />
- </xsl:call-template>
- <xsl:apply-templates />
- </citation>
- </xsl:when>
- <xsl:when test="local-name='q'">
- <quote>
- <xsl:apply-templates select="@*" />
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="." />
- </xsl:call-template>
- <xsl:apply-templates />
- </quote>
- </xsl:when>
- <xsl:when test="local-name(.)='i' or local-name(.)='u' or local-name(.)='em'
- or local-name(.)='s' or local-name(.)='strike'">
- <emphasis>
- <xsl:apply-templates select="@*" />
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="." />
- </xsl:call-template>
- <xsl:apply-templates />
- </emphasis>
- </xsl:when>
- <xsl:when test="local-name(.)='sup'">
- <superscript>
- <xsl:apply-templates select="@*" />
- <xsl:apply-templates />
- </superscript>
- </xsl:when>
- <xsl:when test="local-name(.)='sub'">
- <subscript>
- <xsl:apply-templates select="@*" />
- <xsl:apply-templates />
- </subscript>
- </xsl:when>
- <xsl:when test="local-name(.)='tt' or local-name='kbd' or local-name='samp' or local-name='var' or local-name='code'">
- <literal>
- <xsl:apply-templates select="@*" />
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="." />
- </xsl:call-template>
- <xsl:apply-templates />
- </literal>
- </xsl:when>
- <xsl:otherwise>
- <phrase>
- <xsl:apply-templates select="@*" />
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="." />
- </xsl:call-template>
- <xsl:apply-templates />
- </phrase>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:call-template name="simpara_pack_node">
- <xsl:with-param name="nodeContent" select="$nodeContent" />
- </xsl:call-template>
-
- </xsl:otherwise>
-
- </xsl:choose>
-
- </xsl:template>
-
- <xsl:template match="html:ins|html:del">
- <xsl:variable name="nodeContent">
- <phrase>
- <xsl:attribute name="revisionflag">
- <xsl:choose>
- <xsl:when test="local-name(.)='ins'">
- <xsl:value-of select="'added'" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="'deleted'" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
-
- <xsl:apply-templates select="@*" />
-
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="." />
- </xsl:call-template>
-
- <xsl:apply-templates />
-
- </phrase>
- </xsl:variable>
-
- <xsl:call-template name="simpara_pack_node">
- <xsl:with-param name="nodeContent" select="$nodeContent" />
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="process_text_elements">
- <xsl:param name="node" select="." />
-
- <xsl:variable name="nodeContent">
- <phrase>
- <xsl:apply-templates select="@*" />
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="$node" />
- </xsl:call-template>
- <xsl:apply-templates />
- </phrase>
- </xsl:variable>
-
- <xsl:call-template name="simpara_pack_node">
- <xsl:with-param name="nodeContent" select="$nodeContent" />
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="html:ul">
- <itemizedlist>
- <xsl:apply-templates select="@*" />
- <xsl:apply-templates/>
- </itemizedlist>
- </xsl:template>
-
- <xsl:template match="html:ol">
- <orderedlist>
- <xsl:apply-templates select="@*" />
- <xsl:if test="@start">
- <xsl:attribute name="condition">
- <xsl:value-of select="concat('RHC.VALUE.START\', @start)"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:attribute name="numeration">
- <xsl:choose>
- <xsl:when test="@type='A'">upperalpha</xsl:when>
- <xsl:when test="@type='a'">loweralpha</xsl:when>
- <xsl:when test="@type='I'">upperroman</xsl:when>
- <xsl:when test="@type='i'">lowerroman</xsl:when>
- <xsl:otherwise>arabic</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <xsl:apply-templates/>
- </orderedlist>
- </xsl:template>
-
- <xsl:template match="html:dl">
- <variablelist>
- <xsl:apply-templates select="@*" />
- <xsl:for-each select="html:dt">
- <varlistentry>
- <term>
- <xsl:apply-templates/>
- </term>
- <listitem>
- <xsl:choose>
- <xsl:when test="local-name(following-sibling::*[1]) = 'dd'">
- <xsl:apply-templates select="following-sibling::*[1]"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="generate_dummy_element">
- <xsl:with-param name="elementname" select="'para'" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </listitem>
- </varlistentry>
- </xsl:for-each>
- </variablelist>
- </xsl:template>
-
- <xsl:template match="html:dd">
- <xsl:apply-templates select="@*" />
- <xsl:choose>
- <xsl:when test="boolean(html:p|html:h1|html:h2|html:h3|html:h4|html:h5|html:h6)">
- <xsl:apply-templates/>
- </xsl:when>
- <xsl:otherwise>
- <para>
- <xsl:call-template name="generate_dummy_role_attribute" />
- <xsl:apply-templates select="@*" />
- <xsl:apply-templates/>
- </para>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="html:li/text()">
- <xsl:if test="normalize-space(.) != ''">
- <simpara>
- <xsl:call-template name="generate_dummy_role_attribute" />
- <xsl:value-of select="." />
- </simpara>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="html:li">
- <listitem>
- <xsl:apply-templates select="@*" />
- <xsl:choose>
- <xsl:when test="count(text())>0">
- <xsl:apply-templates />
- </xsl:when>
- <!--
- <xsl:when test="not(html:p|html:h1|html:h2|html:h3|html:h4|html:h5|html:h6)">
- <para>
- <xsl:call-template name="generate_dummy_role_attribute" />
- <xsl:apply-templates/>
- </para>
- </xsl:when>
- -->
- <xsl:when test="not(*)">
- <xsl:call-template name="generate_dummy_element">
- <xsl:with-param name="elementname" select="'para'" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates />
- </xsl:otherwise>
- </xsl:choose>
- </listitem>
- </xsl:template>
-
- <xsl:template match="html:table">
- <xsl:variable name="wlColumnCount">
- <xsl:call-template name="countColumn">
- <xsl:with-param name="table" select="."/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="nodeContent">
- <informaltable frame="none">
- <tgroup colsep="0" rowsep="0">
- <xsl:apply-templates select="@*" />
- <xsl:attribute name="cols">
- <xsl:value-of select="$wlColumnCount"/>
- </xsl:attribute>
- <xsl:call-template name="generateColspec">
- <xsl:with-param name="count" select="$wlColumnCount"/>
- <xsl:with-param name="colNodes" select="./html:col|./html:colgroup/html:col" />
- </xsl:call-template>
-
- <xsl:choose>
- <xsl:when test="html:thead/html:tr/html:th">
- <thead>
- <xsl:apply-templates select="html:thead/html:tr[child::html:th]"/>
- </thead>
- <tbody>
- <xsl:apply-templates select="html:tbody/html:tr[not(child::html:th)]|html:tr[not(child::html:th)]"/>
- </tbody>
- </xsl:when>
- <xsl:when test="html:tr/html:th">
- <thead>
- <xsl:apply-templates select="html:tr[child::html:th]"/>
- </thead>
- <tbody>
- <xsl:apply-templates select="html:tbody/html:tr[not(child::html:th)]|html:tr[not(child::html:th)]"/>
- </tbody>
- </xsl:when>
- <xsl:when test="html:thead/html:th">
- <thead>
- <row>
- <xsl:apply-templates select="html:thead/html:th"/>
- </row>
- </thead>
- <tbody>
- <xsl:apply-templates select="html:tbody/html:tr|html:tr"/>
- </tbody>
- </xsl:when>
- <xsl:otherwise>
- <tbody>
- <xsl:apply-templates select="html:tr|html:tbody/html:tr"/>
- </tbody>
- </xsl:otherwise>
- </xsl:choose>
- </tgroup>
- </informaltable>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="parent::html:td"> <!-- table in table, in docbook, table can't be directly child of an table entry -->
- <para>
- <xsl:call-template name="generate_dummy_role_attribute" />
- <xsl:copy-of select="$nodeContent" />
- </para>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="$nodeContent" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="generateColspec">
- <xsl:param name="count" select="0"/>
- <xsl:param name="number" select="1"/>
- <xsl:param name="colNodes" select="./html:col|./html:colgroup/html:col" />
- <!--xsl:if test="$colNodes"-->
- <xsl:choose>
- <xsl:when test="$count < $number"/>
- <xsl:otherwise>
- <xsl:variable name="currentColNode" select="$colNodes[$number]" />
- <colspec>
- <xsl:if test="$currentColNode/@class">
- <xsl:attribute name="char"> <!-- we use this attribute instead of "role" because there's no "role" for colspec! -->
- <xsl:value-of select="concat('RHC.',$currentColNode/@class,'\col')" />
- </xsl:attribute>
- </xsl:if>
- <xsl:attribute name="colnum">
- <xsl:value-of select="$number"/>
- </xsl:attribute>
- <xsl:attribute name="colname">
- <xsl:value-of select="concat('col',$number)"/>
- </xsl:attribute>
- </colspec>
- <xsl:call-template name="generateColspec">
- <xsl:with-param name="count" select="$count"/>
- <xsl:with-param name="number" select="$number + 1"/>
- <xsl:with-param name="colNodes" select="$colNodes" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- <!--/xsl:if-->
- </xsl:template>
-
- <xsl:template match="html:tr">
- <row>
- <xsl:apply-templates select="@*" />
- <xsl:apply-templates/>
- </row>
- </xsl:template>
-
- <xsl:template match="html:th|html:td">
- <xsl:variable name="position" select="count(preceding-sibling::*) + 1"/>
- <entry>
- <xsl:apply-templates select="@*" />
- <xsl:if test="@colspan > 1">
- <xsl:attribute name="namest">
- <xsl:value-of select="concat('col',$position)"/>
- </xsl:attribute>
- <xsl:attribute name="nameend">
- <xsl:value-of select="concat('col',$position + number(@colspan) - 1)"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="@rowspan > 1">
- <xsl:attribute name="morerows">
- <xsl:value-of select="number(@rowspan) - 1"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:apply-templates/>
- </entry>
- </xsl:template>
-
- <xsl:template name="countColumn">
- <xsl:param name="table" select="."/>
- <xsl:param name="row" select="$table/html:tr[1]|$table/html:tbody/html:tr[1]"/>
- <xsl:param name="max" select="0"/>
- <xsl:variable name="wlCurrentRow">
- <xsl:call-template name="countRow">
- <xsl:with-param name="cell" select="$row/html:td[1]"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="wlMax">
- <xsl:choose>
- <xsl:when test="$wlCurrentRow > $max">
- <xsl:value-of select="number($wlCurrentRow)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="number($max)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="count($row/following-sibling::html:tr) = 0">
- <xsl:value-of select="$wlMax"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="countColumn">
- <xsl:with-param name="table" select="$table"/>
- <xsl:with-param name="row" select="($row/following-sibling::html:tr)[1]"/>
- <xsl:with-param name="max" select="$wlMax"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="countRow">
- <xsl:param name="cell"/>
- <xsl:param name="count" select="0"/>
- <xsl:variable name="wlCount">
- <xsl:choose>
- <xsl:when test="$cell/@colspan > 1">
- <xsl:value-of select="number($cell/@colspan) + number($count)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="number('1') + number($count)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="count($cell/following-sibling::*) > 0">
- <xsl:call-template name="countRow">
- <xsl:with-param name="cell" select="$cell/following-sibling::*[1]"/>
- <xsl:with-param name="count" select="$wlCount"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$wlCount"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-
- <xsl:template name="process_script_node">
- <xsl:if test="$export.script = 1">
- <programlisting>
- <xsl:if test="@type">
- <xsl:attribute name="role">
- <xsl:value-of select="@type"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="@language">
- <xsl:attribute name="lang">
- <xsl:value-of select="@language"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="@src">
- <xsl:attribute name="xreflabel">
- <xsl:value-of select="@src"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:apply-templates/>
- </programlisting>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="html:script">
- <xsl:call-template name="process_script_node" />
- </xsl:template>
-
- <xsl:template match="html:head/html:script">
- </xsl:template>
-
- <xsl:template match="html:head/html:script" mode="head_script">
- <xsl:call-template name="process_script_node" />
- </xsl:template>
-
- <!-- object & style -->
- <xsl:template match="html:object">
- <xsl:comment>[RH.HTML.OBJECT]
- <xsl:value-of select="RHHandlerDb:nodeToStr(.)" />
- </xsl:comment>
- </xsl:template>
-
- <xsl:template match="html:style">
- <xsl:if test="$export.style = 1">
- <xsl:comment>[RH.HTML.RML_10]
- <xsl:value-of select="RHHandlerDb:nodeToStr(.)" />
- </xsl:comment>
- </xsl:if>
- </xsl:template>
-
- <!-- @class -->
- <xsl:template match="html:*/@class">
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="parent::*" />
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="generate_element_role">
- <xsl:param name="node" select="." />
- <xsl:variable name="tagname" select="concat('\',name($node))" />
- <xsl:variable name="class">
- <xsl:if test="$export.style = 1">
- <xsl:if test="$node/@class">
- <xsl:value-of select="$node/@class" />
- </xsl:if>
- </xsl:if>
- </xsl:variable>
- <xsl:if test="$export.style = 1">
- <xsl:attribute name="role">
- <xsl:value-of select="concat('RHC.',string($class),$tagname)" />
- </xsl:attribute>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="generate_dummy_role_attribute">
- <xsl:attribute name="role">
- <xsl:value-of select="$rhc.const.dummyflagstring" />
- </xsl:attribute>
- </xsl:template>
-
- <xsl:template name="generate_dummy_element">
- <xsl:param name="elementname" select="''" />
-
- <xsl:if test="$elementname != ''">
- <xsl:element name="{$elementname}">
- <xsl:call-template name="generate_dummy_role_attribute" />
- </xsl:element>
- </xsl:if>
- </xsl:template>
-
- <!-- @id -->
- <xsl:template match="html:*/@id">
- <xsl:attribute name="id">
- <xsl:value-of select="normalize-space(.)" />
- </xsl:attribute>
- </xsl:template>
-
- <xsl:template match="html:address">
- <address>
- <xsl:call-template name="generate_element_role" />
- <xsl:apply-templates />
- </address>
- </xsl:template>
-
- <xsl:template match="html:center">
- <para>
- <xsl:apply-templates select="@*" />
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="." />
- </xsl:call-template>
- <xsl:apply-templates />
- </para>
- </xsl:template>
-
- <xsl:template match="html:span[@class='__ROBOML_DISCARDED__']">
- <xsl:variable name="nodeContent">
- <replaceable>
- <xsl:apply-templates select="@*" />
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="." />
- </xsl:call-template>
- <xsl:apply-templates />
- </replaceable>
- </xsl:variable>
-
- <xsl:call-template name="simpara_pack_node">
- <xsl:with-param name="nodeContent" select="$nodeContent" />
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="html:br|html:nobr|html:hr">
- <xsl:variable name="nodeContent">
- <markup>
- <xsl:apply-templates select="@*" />
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="." />
- </xsl:call-template>
- </markup>
- </xsl:variable>
-
- <xsl:call-template name="simpara_pack_node">
- <xsl:with-param name="nodeContent" select="$nodeContent" />
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="html:marquee">
- <blockquote>
- <xsl:call-template name="generate_dummy_role_attribute"/>
- <para>
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="." />
- </xsl:call-template>
- <xsl:apply-templates />
- </para>
- </blockquote>
- </xsl:template>
-
- <xsl:template match="html:pre">
- <programlisting>
- <xsl:call-template name="generate_element_role">
- <xsl:with-param name="node" select="." />
- </xsl:call-template>
- <xsl:apply-templates />
- </programlisting>
- </xsl:template>
-
- <xsl:template match="comment()">
- <xsl:if test="$export.comment = 1">
- <xsl:comment><xsl:value-of select="."/></xsl:comment>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="*">
- <xsl:message>No template for <xsl:value-of select="name()"/></xsl:message>
- <xsl:apply-templates />
- </xsl:template>
-
- <xsl:template match="@*">
- <xsl:message>No template for <xsl:value-of select="name()"/></xsl:message>
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="text()">
- <xsl:variable name="nodeContent">
- <xsl:copy />
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="(normalize-space(.) != '')">
- <xsl:call-template name="simpara_pack_node">
- <xsl:with-param name="nodeContent" select="$nodeContent" />
- </xsl:call-template>
- </xsl:when>
- <xsl:when test=". != ''">
- <xsl:copy />
- </xsl:when>
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="simpara_pack_node">
- <xsl:param name="nodeContent" select="." />
-
- <xsl:if test="$nodeContent">
- <xsl:choose>
- <xsl:when test="parent::html:body or parent::html:div or parent::html:li or parent::html:noscript">
- <simpara>
- <xsl:call-template name="generate_dummy_role_attribute"/>
- <xsl:copy-of select="$nodeContent" />
- </simpara>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="$nodeContent" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
-
- </xsl:stylesheet>
-